package org.ziwei.paipan.biao;

import org.ziwei.paipan.var.DiZhi;
import org.ziwei.paipan.var.TianGan;
import org.ziwei.paipan.var.WuXing;

/**
 * 五行局表
 * 
 * 根据命宫的天干和地支，再结合纳音五行，得到五行局
 * 例如命宫天干为乙，地支为丑，乙丑根据六十甲子纳音五行歌诀，“甲子乙丑海中金”，因此五行属金四局
 * 五行局分别为：
 * 金四局，木三局，水二局，火六局，土五局
 * 
 * 根据后天八卦，应该是水一、火二、木三、金四、土五，为何是水二局，火六局？
 * 紫薇斗数将先天八卦配合后天八卦，先天八卦中南方是乾位，北方是坤位，在后天八卦中乾为六，坤困为二
 * 五行局是将先天八卦的南方火位配合后天八卦的乾六数，成为火六局
 * 将先天八卦的北方水位配合后天八卦的坤二数，成为水二局
 * 木三局，金四局，土五局保持不变
 * 
 * 六十甲子纳音五行歌诀：
 * 甲子乙丑海中金，丙寅丁卯炉中火，
 * 戊辰己巳大林木，庚午辛末路旁土，
 * 壬申癸酉剑锋金，甲戌乙亥山头火，
 * 丙子丁丑涧下水，戊寅己卯城头土，
 * 庚辰辛巳白腊金，壬午癸未杨柳木，
 * 甲申乙酉泉中水，丙戌丁女屋上土，
 * 戊子己丑霹雳火，庚寅辛卯松柏木，
 * 壬辰癸巳长流水，甲午乙未沙中金，
 * 丙申丁酉山下火，戊戌己女平地术，
 * 庚子辛丑壁上土，壬寅癸卯金箔金，
 * 甲辰乙巳覆灯火，丙午丁未天河水，
 * 戊申己酉大驿土，庚戌辛女钗钏金，
 * 壬子癸丑桑柘木，甲寅乙卯大溪水，
 * 丙辰丁巳沙中土，戊午己未天上火，
 * 庚申辛酉石榴木，壬戌癸女大海水。
 */
public class WuXingJuBiao {
	/**
	 * 根据以上原理，计算出五行局表
	 * 横轴命宫宫支，纵轴命宫宫干
	 */
	public static WuXing[][] wuXingJuBiao = {
		{WuXing.JIN,WuXing.SHUI,WuXing.HUO,WuXing.JIN,WuXing.SHUI,WuXing.HUO},
		{WuXing.SHUI,WuXing.HUO,WuXing.TU,WuXing.SHUI,WuXing.HUO,WuXing.TU},
		{WuXing.HUO,WuXing.TU,WuXing.MU,WuXing.HUO,WuXing.TU,WuXing.MU},
		{WuXing.TU,WuXing.MU,WuXing.JIN,WuXing.TU,WuXing.MU,WuXing.JIN},
		{WuXing.MU,WuXing.JIN,WuXing.SHUI,WuXing.MU,WuXing.JIN,WuXing.SHUI}};
	
	/**
	 * 根据命宫干支，返回五行
	 * @param gonggan 命宫宫干
	 * @param gongzhi 命宫宫支
	 * @return WuXing
	 */
	public static WuXing dingWuXingJu(TianGan gonggan, DiZhi gongzhi){
		return wuXingJuBiao[gonggan.ordinal()/2][gongzhi.ordinal()/2];
	}
}
